Most computer program applications can be described in the abstract as the total possible interactions between defined object components.
When programming is done by linking object components to each other, the relationships between the object components become hard coded in a program.
When programming is done by application modeling, object components are linked to each other indirectly, through a framework, for example. The premise behind application modeling is that it is possible in many cases to describe and standardize the interaction of object components in an abstract way so that different object components can be addressed in an identical manner. With application modeling, interaction is thus not implemented by a direct method call to the desired target, but through a standardized method call to a neutral instance (a framework) that forwards the request. The actual programming is thus reduced to the clearly defined and isolated object components.
Application modeling with the help of frameworks has the following advantages. The overall system has a reduced susceptibility to errors. The overall system is easier to maintain. The programming of object components and the modeling of an application are decoupled. The application must only be concerned about the development of its functions (object components). New components can be integrated without programming.
While programming is based directly on a set of object components, in modeling a framework is a neutral instance that resolves all indirection at runtime. By analogy one can imagine a portal that acts as a broker and arranges for services (e.g., applications). This idea is the basis for application modeling. Of course this view is an ideal; in reality it is to be expected that both modeling and programming will be used for the coordination of object components in an actual project.